﻿//-----------------------------------------------------------------------
// <copyright file="ActionLog.cs" company="deixei.com">
//     Copyright (c) deixei.com. All rights reserved.
// </copyright>
// <author>Marcio Parente</author>
//---------------------------------------------------------------------
namespace Deixei.Domain
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    /// <summary>
    /// Action Log. represents all web actions. to be used by an action filter
    /// </summary>
    public class ActionLog
    {
        /// <summary>
        /// Gets or sets the action log id.
        /// </summary>
        /// <value>
        /// The action log id.
        /// </value>
        [Key]
        public int ActionLogId
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the application id.
        /// </summary>
        /// <value>
        /// The application id.
        /// </value>
        public int ApplicationId
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the area.
        /// </summary>
        /// <value>
        /// The area.
        /// </value>
        public string Area
        {
            get;
            set;
        }
        /// <summary>
        /// Gets or sets the controller.
        /// </summary>
        /// <value>
        /// The controller.
        /// </value>
        public string Controller
        {
            get;
            set;
        }
        /// <summary>
        /// Gets or sets the action.
        /// </summary>
        /// <value>
        /// The action.
        /// </value>
        public string Action
        {
            get;
            set;
        }
        /// <summary>
        /// Gets or sets the IP.
        /// </summary>
        /// <value>
        /// The IP.
        /// </value>
        public string IP
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the date time.
        /// </summary>
        /// <value>
        /// The date time.
        /// </value>
        public DateTime DateTime
        {
            get;
            set;
        }

        /// <summary>
        /// Archivable Region
        /// </summary>
        /// <value>
        /// The deleted by.
        /// </value>
        [Display(Name = "Deleted By", Description = "Username of the user that deleted this item.", ShortName = "Del.By")]
        public string DeletedBy { get; set; }

        /// <summary>
        /// Gets or sets the deleted.
        /// </summary>
        /// <value>
        /// The deleted.
        /// </value>
        [Display(Name = "Deleted Date", Description = "Date of when this item was deleted.", ShortName = "Del.Dt")]
        public DateTime? Deleted { get; set; }

        /// <summary>
        /// Auditable Region
        /// </summary>
        /// <value>
        /// The created by.
        /// </value>
        [Display(Name = "Created By", Description = "Username of the user that firts registered this item.", ShortName = "Crt.By")]
        public string CreatedBy { get; set; }

        /// <summary>
        /// Gets or sets the created.
        /// </summary>
        /// <value>
        /// The created.
        /// </value>
        [Display(Name = "Created Date", Description = "Date of when this item was firts registered.", ShortName = "Crt.Dt")]
        public DateTime Created { get; set; }

        /// <summary>
        /// Gets or sets the updated by.
        /// </summary>
        /// <value>
        /// The updated by.
        /// </value>
        [Display(Name = "Updated By", Description = "Username of the user that last changed this item.", ShortName = "Upd.By")]
        public string UpdatedBy { get; set; }

        /// <summary>
        /// Gets or sets the updated.
        /// </summary>
        /// <value>
        /// The updated.
        /// </value>
        [Display(Name = "Updated Date", Description = "Date of when this item was last changed.", ShortName = "Upd.Dt")]
        public DateTime? Updated { get; set; }
    }
}
